package com.ptv.database;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class AlumnosBDAdapter {

	private Context contexto;
	private SQLiteDatabase basedatos;
	private AlumnosBDHelper bdHelper;
	public static final String CAMPO_ID = "_id";
	public static final String CAMPO_NOMBRE = "nombre";
	public static final String CAMPO_APE1 = "apellido1";
	public static final String CAMPO_APE2 = "apellido2";
	public static final String CAMPO_DIRECCION = "direccion";
	public static final String CAMPO_TELEFONO = "telefono";
	public static final String CAMPO_EMAIL = "email";
	public static final String CAMPO_LUNES = "lunes";
	public static final String CAMPO_MARTES = "martes";
	public static final String CAMPO_MIERCOLES = "miercoles";
	public static final String CAMPO_JUEVES = "jueves";
	public static final String CAMPO_VIERNES = "viernes";
	public static final String CAMPO_SABADO = "sabado";
	public static final String CAMPO_DOMINGO = "domingo";
	public static final String CAMPO_HORA_INI = "horaIni";
	public static final String CAMPO_HORA_FIN = "horaFin";
	public static final String CAMPO_NUM_HORAS = "numHoras";
	public static final String CAMPO_PRECIO_HORA = "precioHora";
	public static final String CAMPO_MATERIA = "materia";
	public static final String CAMPO_NOTAS = "notas";
	private static final String TABLA_BD = "alumnos";
	
	public AlumnosBDAdapter(Context context) {
		this.contexto = context;
	}
	
	public SQLiteDatabase getBD() {
		return basedatos;
	}
	
	public AlumnosBDAdapter abrir() throws SQLException {
		bdHelper = new AlumnosBDHelper(contexto);
		basedatos = bdHelper.getWritableDatabase();
		return this;
	}	
	
	public void cerrar() {
		bdHelper.close();
	}	
	
	public long crearAlumno(String nombre, String apellido1, String apellido2, 
			String direccion,String telefono,String email,boolean lunes,boolean martes,boolean miercoles,
			boolean jueves, boolean viernes, boolean sabado, boolean domingo,String horaIni, String horaFin,
			float numHoras, float precioHora,String materia, String notas) {
		ContentValues initialValues = crearContentValues(nombre, apellido1,apellido2,direccion,
				telefono, email,lunes,martes,miercoles,jueves,viernes,sabado,domingo,horaIni,horaFin,numHoras,
				precioHora,materia,notas);
		return basedatos.insert(TABLA_BD, null, initialValues);
	}	
	
	public boolean actualizarAlumno(long id,String nombre, String apellido1, String apellido2,  
			String direccion,String telefono,String email,boolean lunes,boolean martes,boolean miercoles,
			boolean jueves, boolean viernes, boolean sabado, boolean domingo,String horaIni, String horaFin,
			float numHoras, float precioHora,String materia, String notas) {
		ContentValues updateValues = crearContentValues(nombre, apellido1,apellido2,direccion,
				telefono, email,lunes,martes,miercoles,jueves,viernes,sabado,domingo,horaIni,horaFin,numHoras,
				precioHora,materia,notas);
		return basedatos.update(TABLA_BD, updateValues, CAMPO_ID + "=" + id, null) > 0;
	}	
	
	public boolean borraTodosLosAlumnos() {
		return basedatos.delete(TABLA_BD, null , null) > 0;
	}
	
	public boolean borraAlumno(long id) {
		return basedatos.delete(TABLA_BD, CAMPO_ID + "=" + id, null) > 0;
	}	
	
	public Cursor obtenerAlumnos() {
		return basedatos.query(TABLA_BD, new String[] { CAMPO_ID, CAMPO_NOMBRE, CAMPO_APE1,CAMPO_APE2,CAMPO_DIRECCION,
				CAMPO_TELEFONO,CAMPO_EMAIL,CAMPO_LUNES,CAMPO_MARTES,CAMPO_MIERCOLES,CAMPO_JUEVES,CAMPO_VIERNES,
				CAMPO_SABADO,CAMPO_DOMINGO,CAMPO_HORA_INI,CAMPO_HORA_FIN,CAMPO_NUM_HORAS,CAMPO_PRECIO_HORA, CAMPO_MATERIA,
				CAMPO_NOTAS},
				null, null, null, null, null);
	}
	
	public Cursor obtenerAlumnosBackup() {
		return basedatos.query(TABLA_BD, null, null, null, null, null, null);
	}
	
	public Cursor getAlumno(long id) throws SQLException {
		Cursor mCursor = basedatos.query(true, TABLA_BD, new String[] {
				CAMPO_ID, CAMPO_NOMBRE, CAMPO_APE1,CAMPO_APE2,CAMPO_DIRECCION,CAMPO_TELEFONO,CAMPO_EMAIL,CAMPO_LUNES,
				CAMPO_MARTES,CAMPO_MIERCOLES,CAMPO_JUEVES,CAMPO_VIERNES,CAMPO_SABADO,CAMPO_DOMINGO,CAMPO_HORA_INI,
				CAMPO_HORA_FIN,CAMPO_NUM_HORAS,CAMPO_PRECIO_HORA, CAMPO_MATERIA, CAMPO_NOTAS},
				CAMPO_ID + "=" + id, null, null, null, null, null);
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}		
	
	private ContentValues crearContentValues(String nombre, String apellido1, String apellido2,  
			String direccion,String telefono,String email,boolean lunes,boolean martes,boolean miercoles,
			boolean jueves, boolean viernes, boolean sabado, boolean domingo,String horaIni, String horaFin,
			float numHoras, float precioHora,String materia, String notas) {
		ContentValues values = new ContentValues();
		values.put(CAMPO_NOMBRE, nombre);
		values.put(CAMPO_APE1, apellido1);
		values.put(CAMPO_APE2, apellido2);
		values.put(CAMPO_DIRECCION, direccion);
		values.put(CAMPO_TELEFONO, telefono);
		values.put(CAMPO_EMAIL, email);
		values.put(CAMPO_LUNES, lunes);
		values.put(CAMPO_MARTES, martes);
		values.put(CAMPO_MIERCOLES, miercoles);
		values.put(CAMPO_JUEVES, jueves);
		values.put(CAMPO_VIERNES, viernes);
		values.put(CAMPO_SABADO, sabado);
		values.put(CAMPO_DOMINGO, domingo);
		values.put(CAMPO_HORA_INI, horaIni);
		values.put(CAMPO_HORA_FIN, horaFin);
		values.put(CAMPO_NUM_HORAS, numHoras);
		values.put(CAMPO_PRECIO_HORA, precioHora);
		values.put(CAMPO_MATERIA, materia);
		values.put(CAMPO_NOTAS, notas);
		return values;
	}		
	
}
